package br.com.ucb.invista.controller;

import java.io.Serializable;
import java.util.Arrays;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import br.com.ucb.invista.dao.ContaBancariaDao;
import br.com.ucb.invista.domain.ContaBancaria;
import br.com.ucb.invista.enumeration.TipoAtivo;
import br.com.ucb.invista.enumeration.TipoConta;
import br.com.ucb.invista.enumeration.TipoMoeda;
import br.com.ucb.invista.utils.Constantes;

@ManagedBean(name = "contaBancariaController")
@SessionScoped
public class ContaBancariaController implements Serializable {

	private static final long serialVersionUID = 1L;
	
	private ContaBancaria contaBancaria;
	private ContaBancariaDao contaBancariaDao;
	
	public ContaBancariaController() {
		this.contaBancaria = new ContaBancaria();	
		this.contaBancariaDao = new ContaBancariaDao();
	}
	
	public String novo() {
		return Constantes.paginaContaBancariaCadastrarAlterar;
	}
	
	public String cancelar() {
		return Constantes.paginaContaBancariaListar;
	}
	
	public void limparCampos() {
		this.contaBancaria = new ContaBancaria();
		this.contaBancariaDao = new ContaBancariaDao();
	}
	
	public List<TipoConta> listarTipoConta() {
		return Arrays.asList(TipoConta.values());	
	}
	
	public List<TipoAtivo> listarTipoAtivo() {
		return Arrays.asList(TipoAtivo.values());
	}
	
	public List<TipoMoeda> listarTipoMoeda() {
		return Arrays.asList(TipoMoeda.values());
	}
	
	public String salvar() {
		this.contaBancariaDao.salvar(contaBancaria);
			this.limparCampos();
				return Constantes.paginaContaBancariaCadastrarAlterar;
	}
	
	public String alterar(ContaBancaria contaBancaria) {
		this.contaBancaria = contaBancaria;
		this.contaBancariaDao.alterar(contaBancaria);
		return Constantes.paginaContaBancariaCadastrarAlterar;
	}
	
	public String excluir(ContaBancaria contaBancaria) {
		this.contaBancaria = contaBancaria;
		this.contaBancariaDao.excluir(this.contaBancaria);
			return Constantes.paginaContaBancariaListar;
	}
	
	public String abrirPaginaContaBancariaCadastrar() {
		return Constantes.paginaContaBancariaCadastrarAlterar;
	} 
	
	public ContaBancaria getContaBancaria() {
		return contaBancaria;
	}

	public void setContaBancaria(ContaBancaria contaBancaria) {
		this.contaBancaria = contaBancaria;
	}

	public ContaBancariaDao getContaBancariaDao() {
		return contaBancariaDao;
	}

	public void setContaBancariaDao(ContaBancariaDao contaBancariaDao) {
		this.contaBancariaDao = contaBancariaDao;
	}
}
